package my_enum;

/**
 * 使用enum关键字，创建枚举类，并获取枚举类的对象
 * 注意：（1）枚举类，一旦创建，就不能通过外部更改；（2）在外部调用时，只能获取枚举类内部自己预先创建好的实例。
 */
public class EnumKeywordTest {
    public static void main(String[] args) {
        //调用enum的内部具体实例
        DogOfEnum dog1 = DogOfEnum.Dog1;
        System.out.println(dog1);
        //enum类常用方法
        DogOfEnum[] values = DogOfEnum.values();
        for (DogOfEnum value : values) {
            System.out.println(value);
        }
        System.out.println("--------------------");

        DogOfEnum dog2 = DogOfEnum.valueOf("Dog2");
        System.out.println(dog2);
        System.out.println("--------------------");

        DogOfEnum dog3 = DogOfEnum.valueOf(DogOfEnum.class, "Dog3");
        System.out.println(dog3);
        System.out.println("--------------------");

    }
}
enum DogOfEnum {

    //本类的实例对象，注意用逗号隔开，最后一个实例对象加分号;
    Dog1("大黄",10),
    Dog2("旺财",10),
    Dog3("阿黑",10),
    Dog4("大咪",13);

    //私有最终属性
    private final String name;
    private final int age;

    //私有构造器
    private DogOfEnum(String name,int age){
        this.name = name;
        this.age = age;
    }

    //getter方法,没有set方法
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "DogOfEnum{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}